package org.luxor.system.entity.vo.router;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;

/**
 * TDesign 路由菜单 VO
 * <p>
 * 用于定义路由在菜单上的配置，如：菜单名称，菜单图标，菜单路由等
 * </p>
 *
 * @author YanXinMing @date 2024/9/23
 */
@Data
public class MenuVo {

    /**
     * 路由名称，影响多标签 Tab 页的 keep-alive 的能力，如果要确保页面有 keep-alive 的能力，请保证该路由的name与对应页面（SFC)的name保持一致。
     */
    @NotBlank
    private String name;

    /**
     * 路由路径，会与配置中的父级节点的 path 组成该页面路由的最终路径；如果需要跳转外部链接，可以将path设置为 http 协议开头的路径。
     */
    @NotBlank
    private String path;

    /**
     * 渲染该路由时使用的页面组件
     */
    @NotBlank
    private String component;

    /**
     * 重定向的路径
     */
    private String redirect;

    /**
     * 展示效果的配置
     */
    @NotNull
    private MetaVo meta;

    /**
     * 子菜单的配置
     */
    private ArrayList<MenuVo> children;

}
